From e66a821a74087db40c5faef5f81623b370ea5129 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 4 Aug 2016 19:49:27 +0200 Subject: [PATCH] GtkPadController: Notify actions back to the windowing on wayland This allows applications to provide descriptions of the actions performed by each pad feature. pass the GtkPadActionEntry labels for this. https://bugzilla.gnome.org/show_bug.cgi?id=770026 --- gtk/gtkpadcontroller.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gtk/gtkpadcontroller.c b/gtk/gtkpadcontroller.c index dd91835f86..df54d5d49e 100644 --- a/gtk/gtkpadcontroller.c +++ b/gtk/gtkpadcontroller.c @@ -160,6 +160,36 @@ gtk_pad_controller_handle_mode_switch (GtkPadController *controller, guint group, guint mode) { +#ifdef GDK_WINDOWING_WAYLAND + if (GDK_IS_WAYLAND_DISPLAY (gdk_device_get_display (pad))) + { + const GtkPadActionEntry *entry; + gint elem, idx, n_features; + + for (elem = GTK_PAD_ACTION_BUTTON; elem <= GTK_PAD_ACTION_STRIP; elem++) + { + n_features = gdk_device_pad_get_n_features (GDK_DEVICE_PAD (pad), + elem); + + for (idx = 0; idx < n_features; idx++) + { + if (gdk_device_pad_get_feature_group (GDK_DEVICE_PAD (pad), + elem, idx) != group) + continue; + + entry = gtk_pad_action_find_match (controller, elem, idx, mode); + if (!entry) + continue; + if (!g_action_group_has_action (controller->action_group, + entry->action_name)) + continue; + + gdk_wayland_device_pad_set_feedback (pad, elem, idx, + g_dgettext (NULL, entry->label)); + } + } + } +#endif } static gboolean -- 2.30.2